查看原文
其他

“地下 App Store”:一个内测平台,何以成为黑产的狂欢派对?

鹅师傅 腾讯安全战略研究 2022-05-19


大家好,我是鹅师傅。

 

全球智能手机用户,主要可以分为两类,一类是华为、小米、三星等使用安卓系统的安卓手机,另一类则是使用独有 iOS 系统的苹果手机。

 

不同于安卓多样化的 app 分发渠道,App Store 作为苹果唯一的分发渠道,是苹果“硬件-操作系统-应用分发渠道-开发者-支付渠道-用户”闭环中的重要部分,在安全环节中起着至关重要的作用。

 


iOS 的 App Store 确实非常严格:所有不符合规范的应用,都有被下架的风险,甚至相应的开发者账户也会遭到封禁。
 
但事实上,尽管存在层层审核,一些菠菜、色情类黑产还是在 iOS 生态系统内四处潜伏。这些神仙app到底是如何做到的

 

一切的开端,还得从不为人知的 iOS 签名讲起。

1

“签名”与“掉签”——黑产通行证和他们的梦魇

苹果 iOS 签名又称 ipa 签名,指的是给苹果手机中的应用文件(ipa 文件)进行签名认证的操作。这个签名机制的意义在于,确保每一个安装到 iOS 上的 app,都是苹果官方允许的。

App Store 严格的审核机制将不少 app 拒之门外,一直让开发者苦不堪言。为了能让自己的 app 不经过 App Store,直接下载安装在 iOS 设备上,一些开发者选择了获取苹果签名证书的方式。

 

这样的数字签名,是由数据加密算法实现的。以最简单的 App Store 签名为例,苹果官方会生成一对密钥,公钥在 iOS 里内置,私钥由苹果后台保存。

 

当开发者上传 app 到 App Store 时,苹果后台用私钥对 app 数据进行签名(加密),下载后,iOS 设备用公钥验证这个签名(解密),如果签名正确,是苹果后台认证,即可正常安装使用。

 

(App Store 签名示意图)

 

简单来说,iOS 签名就相当于是一张通行证,ipa 应用文件想要进入 iOS 设备“境内”,就必须先拿到这张通行证证明身份。否则将被拦在门外,无法安装或正常使用。

 

除了乖乖上架 App Store,还有什么途径能拿到 iOS 签名?这其中最为人熟知的,就是企业签名和超级签名。

 

企业签名,是用苹果企业开发者账号生成企业发布证书,再进行签名。这类签名应用(比如说,某公司自己开发的打卡 app)往往没有上传 App Store 的太大价值,苹果不会对它们进行审核,同时因为安装设备数量不设限,分发省事,一度成为黑产团队眼中的“香饽饽”。

 

(企业签名应用安装时,需要先前往手机的【设置】-【通用】,信任证书再获签)

 

超级签名,则是使用个人开发者账号,通过自动添加、注册苹果设备的 udid,生成描述文件进行签名,实现真机测试。同样不会经过苹果审核,也是黑产常用的 iOS 签名之一。

 

这两种签名看着挺香,但都也有各自让黑产们头疼的地方。

 

一本企业证书可以为多个 app 进行签名,但签得越多,频繁“掉签”的风险就越大——当被发现滥用,该企业签名会直接被封杀,对应的所有 app 都将无法继续使用,只能重新签名进行分发。“掉签”的频率有时是 1 天,有时是 1 个月,捉摸不定,非常不利于黑产批量使用。而掉签导致的 app 闪退,也让用户体验变得相当恼火。

 

(让黑产头秃的掉签现场)

 

跟企业签名相比,使用超级签名的应用相对更稳定。但一个明显的问题是,每个开发者账号只能添加 100 个苹果设备 udid,当用户量大的时候,分发成本将会非常高。

 

在两种方案都不够理想的情况下,TestFlight 横空出世!其自带的 TF 签名完美的解决了黑产的所有痛点,成为黑产届的新宠。

 

2

TestFlight——鱼与熊掌的兼得
先看看啥是 TestFlight 。TestFlight 是一个供开发者使用的 app 内测平台,2014 年被苹果收购,成为官方认可的内测应用商店。iOS 的开发者们,可以将 app 的原型上传到这里进行测试,收集反馈后再更迭版本,以提高上架 App Store 的审核通过率。

 


每一款上架测试的 app,可以邀请最多 100 名内部测试员,和 10000 名外部测试员参与测试。每一个构建版本在上传后 90 天内,将保持可供测试的状态。

 

在一般的开发者看来,TestFlight 是 beta 版 app 的集中试炼场。这里不仅有新生小众的作品,也有京东、B 站、爱奇艺等我们常用的app,可以说是包罗万有。

 

而在黑产眼里,在 TestFlight 上架意味着能拿到苹果官方认可的签名证书。不需要信任证书,可直接下载使用,没有设备数量限制;即使安装链接在 90 天后失效,已下载的用户只要不卸载,app 持续提供服务,就可以继续使用。

 

比企业签名稳定,也比超级签名成本更低,TestFlight 因此成为黑产团队新的“香饽饽”。

 

(TestFlight 曾经在免费榜 App 登上第一名,有猜测认为是黑产应用的“功劳”)

 

跟最常见的两种 iOS 签名不同,在用 TestFlight 分发之前,开发者需要先通过 beta 版 app 审核,确保符合 App Store 审核指南。不过这种审核,远比在 App Store 正式上架要宽松。

 

打个比方说,在 TestFlight 上架的某 app 现在是 1.0 版本,这个版本(version)可以有上千个小更新(build),但只有在第一次提交时会经历完整审核。而同一版本号下,只要没有重大更新,后续的小更新都能享受「宽松政策」,无须进行全面审核。

 

这种“稳定不掉签”的体验也很快引起行业注意。目前,国内已经出现了不少第三方服务商提供 TestFlight 上架服务,不仅能代签名,甚至表示可以通过技术手段突破下载人数等限制,最快 20-30 分钟就能通过审核。

 

鹅师傅在知乎稍微搜索了一下,就发现 TestFlight 相关的问题下,活跃的基本都是第三方服务商。而开发者社区 CSDN 里,也常有他们勤劳的身影出没。

 

(一些第三方提供的代签名服务)

 

就这样,TestFlight 从开发者眼中”创意发挥空间更大的地下 App Store”,变成了黑产从业者眼里,一条可以钻空子的发财之道。

 

3

黑产TestFlight小教程——关键操作已隐去
第一步:披上马甲,伪装上架

 

虽说 TestFlight 后续审核宽松,但还是需要经历一次全面的初审。而为了成功上架,黑产一般会通过套壳 app 来使障眼法。

 

简单来说,就是在提交审核时伪装成“正经 app”,比如说手电筒、指南针之类的工具应用,上架后再通过远程更新为网贷博彩、色情直播等页面。

 

鹅师傅在 TestFlight 下载了一款名叫“X 车师傅”的 app,就遇上了这样的套路。

 

介绍显示,“X车师傅”是某汽车服务旗下的维修工人使用的 app,工人可以通过该 app 在线请假与报销,及时了解公司的最新通知,还可以在线接单。

 

听起来很是正经,甚至刚打开进入 app 的界面,也一本正经。刚打开的时候,是这样的。

 


然而,当你进行指定的账户登录操作后,马上就跳转到另一片花花世界。

 

(app内实现自动调整,秒变“真开车”app)

 

这种伪装 app 的背后原理,实际上就是苹果屡禁不止的“热更新”。

 

iOS 的 app 更新,一般都只能通过 App Store下载安装。而热更新,则是悄悄绕过了严格的审核更新,以软件内部下载代码的方式,为 app 偷偷摸摸安装更新。往往也是一些黄色、暴力、赌博等擦边球内容。

 

这种过审后就改头换面的套壳 app,说白了就是“欺诈”,不仅破坏整个生态体验,让应用商店们防不胜防,更有可能为用户的信息安全带来隐患。

 

第二步:打破人数和时间限制,分发出去

 

上架 TestFlight 只是个开始,分发才是最关键一步。偷龙转凤成功上架后,黑产团伙还需要解决一个大问题:有且仅有 10000 个外部测试员名额,怎么变成“无限多”?

 

在 TestFlight 里,开发者可以通过两种常用方式邀请外部测试员

 

一种是在后台输入邮箱地址和姓名,手动添加。测试员会收到邀请邮件,可直接跳转 TestFlight 下载,或领取邀请码自行前往下载。

 
另一种是启用公开链接,设置好通过该链接加入测试的人数,在社交媒体等渠道分享出去。任何一个路人,点击链接都可以加入测试。

 

相比起来,当然是第二种分发方法省事。在分发的同时,黑产从业者一般还会引导用户,在下载安装后点击“停止测试”,这样“来无影去无踪”,就不会占用有限的 10000 个外部测试员名额了。

 


只要已安装用户一直不卸载,该 app 持续提供服务,即使 TestFlight 上的下载链接到期失效,他也可以一直使用不受影响。对“搞黄色”的 app 们来说,也不需要担心 90 天测试有效期,真是一劳永逸好贴心。

 

这些操作,让 TestFlight 在业内有着“稳定不掉签”的传说,也是黑产能在这里无尽分发下去的一大原因。

 

其他套路:山寨 App 诈骗

 

除了披马甲搞网贷博彩和色情,一些诈骗团伙还在 TestFlight 上架山寨 app,再配合电话短信等分发,进行钱财诈骗。

 

今年 4 月,马来西亚警方接获 6 宗报案,称骗子假扮成警察、官员、银行职员等,以话术欺骗受害者通过 TestFlight 下载一个声称是马来西亚国家银行开发的 app,输入银行卡账户和密码等资料,共骗走约 70000 美元。

 

(马来西亚警方展示诈骗团伙所使用的 app)

 

看来,防不胜防不仅是应用商店,还有我们这些一般用户。

 

热更新伪装,钻空子分发,还有我们熟悉的诈骗套路,再加上第三方的帮助……你猜,黑产在 TestFlight 的路会不会越来越好走?

4

不要让开发者的乌托邦,变成黑产的新温床
开发者满怀激动地呈上作品,测试人员积极反馈,协作优化下一个版本……如此循环往复,促进整个 app 生态的健康发展。

 

这本该是 TestFlight 的存在意义和美好愿景,却因为黑产从业者加入,搅浑了一池子的水。

 

针对让人头疼的“热更新”,App Store 本身也在不断加强审核。2017 年开始,苹果全面禁止热更新,不仅相关 app 遭到下架,就连违反规则的开发者也被封号处理。

 

2018 年 11 月,App Store 更集中下架了拼多多、搜狗、科大讯飞、悦跑圈等 900 多款 app,一时引起整个行业关注。

 

App Store 审核指南中,针对热更新 2.5.2 条款)

 

跟 App Store 的层层打击相比,TestFlight 的应对措施是相对缺失的。虽说每个 app 版本的首个创建版本都需要对照 App Store 规范,进行全面审核,但过审后呢?并没有足够的管理精力和整顿力度跟上。

 

这就像是偌大的一座城,只在城门放了几员猛汉把守,一旦想办法绕进去了,从此路路畅通,可以胡作非为。

 

如果 App Store 的同款措施能在 TestFlight 落实,相信也能扼杀不少违规 app。

 

而作为一般用户,鹅师傅提醒你,应当时时警惕,认准 App Store 和认可的开发者,不下载来历不明的 app。

 

不要让开发者的乌托邦,变成黑产的新温床。



 推荐阅读 

喜欢就马上一键三连👇

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存